home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-03 | 1.3 KB | 59 lines | [TEXT/MPS ] |
- SEG 'FloatToLong'
- CASE ON
- STRING ASIS
- MACHINE MC68020
- MC68881
- PROC
-
-
- ;************************************************************
- ; long RoundXToLong(long double x)
-
- export RoundXToLong
-
- RoundXToLong:
- fmove.x 4(sp),fp0 ; get the number
- fmove.l fpcr,d1 ; save current rounding mode
- fmove.l #$00,fpcr ; set rounding toward nearest
- fmove.l fp0,d0 ; convert to integer
- fmove.l d1,fpcr ; restore rounding mode
- rts
- dc.b 'RoundXToLong'
-
-
- ;************************************************************
- ; long TruncXToLong(long double x)
- ; return( (long)(x) );
-
- export TruncXToLong
-
- TruncXToLong:
- fmove.x 4(sp),fp0 ; get the number
- fmove.l fpcr,d1 ; save current rounding mode
- fmove.l #$10,fpcr ; set rounding toward zero (C-like)
- fmove.l fp0,d0 ; convert to integer
- fmove.l d1,fpcr ; restore rounding mode
- rts
- dc.b 'TruncXToLong'
-
-
- ;************************************************************
- ; long FloorXToLong(long double x)
-
- export FloorXToLong
-
- FloorXToLong:
- fmove.x 4(sp),fp0 ; get the number
- fmove.l fpcr,d1 ; save current rounding mode
- fmove.l #$20,fpcr ; set rounding toward minus infinity
- fmove.l fp0,d0 ; convert to integer
- fmove.l d1,fpcr ; restore rounding mode
- rts
- dc.b 'FloorXToLong '
-
- ;************************************************************
-
-
- ENDP
- END
-